﻿//========================================================================//
//      Copyright 2011, Smilodon Studio Inc.
//      All rights reserved.
//========================================================================//

/**
 *	webGL base function
 *      @author: CYS
 */


//GG = function ()
//{
/**
* Creates the HTLM for a failure message
* @param {string} canvasContainerId id of container of th
*        canvas.
* @return {string} The html.
*/
var makeFailHTML = function (msg)
{
	return '' +
	       '<table style="background-color: #8CE; width: 100%; height: 100%;"><tr>' +
	       '<td align="center">' +
	       '<div style="display: table-cell; vertical-align: middle;">' +
	       '<div style="">' + msg + '</div>' +
	       '</div>' +
	       '</td></tr></table>';
};

/**
* Mesasge for getting a webgl browser
* @type {string}
*/
var GET_A_WEBGL_BROWSER = '' +
                          'This page requires a browser that supports WebGL.<br/>' +
                          '<a href="http://get.webgl.org">Click here to upgrade your browser.</a>';

/**
* Mesasge for need better hardware
* @type {string}
*/
var OTHER_PROBLEM = '' +
                    "It doesn't appear your computer can support WebGL.<br/>" +
                    '<a href="http://get.webgl.org/troubleshooting/">Click here for more information.</a>';

/**
* Creates a webgl context. If creation fails it will
* change the contents of the container of the <canvas>
* tag to an error message with the correct links for WebGL.
* @param {Element} canvas. The canvas element to create a
*     context from.
* @param {WebGLContextCreationAttirbutes} opt_attribs Any
*     creation attributes you want to pass in.
* @return {WebGLRenderingContext} The created context.
*/
var initWebGL = function (canvas, opt_attribs)
{
	function showLink(str)
	{
		var container = canvas.parentNode;

		if (container)
		{
			container.innerHTML = makeFailHTML(str);
		}
	};

	if (!window.WebGLRenderingContext)
	{
		showLink(GET_A_WEBGL_BROWSER);
		return null;
	}

	var context = create3DContext(canvas, opt_attribs);

	if (!context)
	{
		showLink(OTHER_PROBLEM);
	}

	return context;
}

/**
* Creates a webgl context.
* @param {!Canvas} canvas The canvas tag to get context
*     from. If one is not passed in one will be created.
* @return {!WebGLContext} The created context.
*/
var create3DContext = function (canvas, opt_attribs)
{
	var names = ["webgl", "experimental-webgl", "webkit-3d", "moz-webgl"];
	var context = null;

	for (var ii = 0; ii < names.length; ++ii)
	{
		try
		{
			context = canvas.getContext(names[ii], opt_attribs);
		}
		catch (e) {}

		if (context)
		{
			break;
		}
	}

	return context;
}


//} ();

